package de.shortys.myhome.api.persistence;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;

public class PersistenceTemplate implements IPersistenceTemplate {

	private HibernateTemplate hibernateTemplate;

	public PersistenceTemplate(HibernateTemplate hibernateTemplate) {
		super();
		this.hibernateTemplate = hibernateTemplate;
	}

	@Override
	public void create(Object obj) {
		hibernateTemplate.getSessionFactory().openSession();
		hibernateTemplate.save(obj);
		hibernateTemplate.getSessionFactory().close();
	}

	@Override
	@SuppressWarnings("unchecked")
	public List read(Class<? extends Object> type) {
		hibernateTemplate.getSessionFactory().openSession();
		List<Class> list = hibernateTemplate.loadAll(type);
		hibernateTemplate.getSessionFactory().close();
		return list;
	}

	@Override
	public void update(Object obj) {
		hibernateTemplate.getSessionFactory().openSession();
		hibernateTemplate.update(obj);
		hibernateTemplate.getSessionFactory().close();
	}

	@Override
	public void delete(Object obj) {
		hibernateTemplate.getSessionFactory().openSession();
		hibernateTemplate.delete(obj);
		hibernateTemplate.getSessionFactory().close();
	}

}
